declaration
statements

scopes
AUTO
AUTOX
STATIC
SHARED
EXTERNAL

types
SBYTE
UBYTE
SSHORT
USHORT
SLONG
ULONG
XLONG
GOADDR
SUBADDR
FUNCADDR
GIANT
SINGLE
DOUBLE
STRING
SCOMPLEX
DCOMPLEX

[scope] [type] variables

Declare the scope and data type of variables.  Variables that do not appear in a declaration statement default to AUTO scope and the default data type, which is XLONG unless an explicit default type is specified on the FUNCTION line.

Composite variables with user-defined types are declared in the same way as built-in type variables.  Substitute the name of the composite type for DOUBLE in the syntax example above.

The valid scopes are:

AUTO                          local, temporary, possibly registered
AUTOX                       local, temporary, never registered
STATIC                      local, permanent
SHARED                     sharable within program
SHARED /name/         sharable within program ( /name/ must match )
EXTERNAL                 sharable between programs
EXTERNAL /name/      sharable between programs ( /name/ must match )

The built-in data types are:

SBYTE signed byte 8-bit integer
UBYTE unsigned byte 8-bit integer
SSHORT signed short 16-bit integer
USHORT unsigned short 16-bit integer
SLONG signed long 32-bit integer
ULONG unsigned long 32-bit integer
XLONG register type 32-bit integer ( or 64-bit integer )
GOADDR address type 32-bit integer ( or 64-bit integer )
SUBADDR address type 32-bit integer ( or 64-bit integer )
FUNCADDR address type 32-bit integer ( or 64-bit integer )
GIANT signed giant 64-bit integer
SINGLE single float 32-bit floating point
DOUBLE double float 64-bit floating point
STRING ubyte string 8-bit unsigned byte characters
SCOMPLEX single complex 32-bit : 32-bit floating point
DCOMPLEX double complex 64-bit : 64-bit floating point

DOUBLE ii, jj, kk
SINGLE x[], y[], z[]
AUTOX USHORT width[], height[]
STATIC DCOMPLEX a, b, c, d, e, f
SHARED UBYTE a[], b[], c[]
SHARED STRING victim, name[], address[], phone[], excuse[]